
#include<bits/stdc++.h>
using namespace std;
int n;
int a[100000],v[100000];
int t,maxn=0;
void dfs(int x,int y)
{
  if(v[x])//当前已经被访问，则可能形成一个圈
  {
    if(a[x]==a[t])//回到了起点，找到了一个环
    {
      if(y>maxn)
      {
        maxn=y;
      }
    }
    return;
  }
  else
  {
    v[x]=1;
    dfs(a[x],y+1);
    v[x]=0;
  }
}
int main()
{
  
  cin>>n;
  for(int i=1;i<=n;i++)
  {
    cin>>a[i];
  }
  for(int i=1;i<=n;i++)
  {
    t=i;//小朋友所在位置
    dfs(i,0);
  }
  cout<<maxn<<endl;
  return 0;
}